Skip to content

Feat/mobile v1#17

Merged
rui-typelets merged 12 commits intomainfrom
feat/mobile-v1
Oct 7, 2025
Merged

Feat/mobile v1#17
rui-typelets merged 12 commits intomainfrom
feat/mobile-v1

Conversation

@rui-typelets
Copy link
Copy Markdown
Collaborator

Summary

This PR introduces the Typelets mobile app (React Native with Expo) and includes comprehensive refactoring to
establish a clean, modular architecture following single responsibility principles.

Features

  • 🔐 End-to-end encryption with master password protection (AES-GCM + PBKDF2)
  • 📱 Cross-platform support (iOS and Android)
  • 📁 Folder organization with nested folder support
  • ⭐ Starred notes and trash management
  • 🎨 Light and dark theme support
  • 📝 Rich text editing with TipTap
  • 🔄 Real-time sync with backend API

Architectural Improvements

API Service Refactoring

  • Split 432-line api.ts into 9 focused modules
  • Separated concerns: notes, folders, encryption, client, types
  • Centralized error handling and pagination utilities
  • Result: Clean, testable, maintainable API layer

Encryption Service Refactoring

  • Split 674-line encryption.ts into 13 focused modules
  • Organized into: core (AES, PBKDF2, crypto), storage (cache, secureStorage), masterPassword
  • AES-GCM encryption with 250,000 PBKDF2 iterations
  • LRU cache for decrypted notes (15-minute TTL)
  • Result: Well-structured encryption layer with clear separation of concerns

MasterPasswordDialog Refactoring

  • Split 578-line component into 6 focused modules
  • Custom hooks: useKeyboardHandler, usePasswordValidation
  • Separated components: MasterPasswordForm, LoadingView
  • Isolated styles and business logic
  • Result: Maintainable, testable password UI components

Tech Stack

  • Framework: React Native with Expo 54
  • Routing: Expo Router (file-based)
  • Authentication: Clerk
  • Encryption: AES-GCM with PBKDF2
  • Storage: Expo SecureStore

Testing

  • ✅ Lint: 0 errors, 21 warnings (pre-existing)
  • ✅ All imports maintain backward compatibility
  • ✅ Zero breaking changes across refactorings
  • ✅ Manual testing on Android (preview build)

Version Management

  • Automatic version bumping via semantic-release
  • Syncs package.json, app.json, iOS buildNumber, Android versionCode
  • Triggered by feat(mobile):, fix(mobile):, refactor(mobile): commits

Documentation

  • Comprehensive README with architecture overview
  • API and encryption usage examples
  • Development and build instructions
  • Security and contributing guidelines

Commits

  • feat(mobile): initial React Native mobile app with encryption
  • feat: add mobile app v1
  • refactor(mobile): modularize API service into smaller, maintainable modules
  • refactor(mobile): modularize encryption service into focused, maintainable modules
  • chore(mobile): remove unused auth context and state files
  • refactor(mobile): break down MasterPasswordDialog into modular components
  • refactor(mobile): fix lint errors
  • refactor(mobile): remove verbose debug logging from password and encryption modules
  • docs(mobile): add comprehensive README documentation

Breaking Changes

None - all refactorings maintain backward compatibility.

@rui-typelets rui-typelets self-assigned this Oct 7, 2025
@rui-typelets rui-typelets merged commit bd068ac into main Oct 7, 2025
3 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Oct 7, 2025

🎉 This PR is included in version 1.19.0 🎉

The release is available on:

Your semantic-release bot 📦🚀

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants